﻿using famails.bus;
using FAMailUtils;
using FAMailUtils.Data.DAO;
using FAMailUtils.Data.DTO;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace OnlineBusinesses.Areas.CustomerAdmin
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            try
            {
                if (!IsPostBack)
                {
                    UserLoginDTO userLogin = ((AdminCustomer_Master)Page.Master).getUserLogin();
                    int user = userLogin.Client.UserID;
                    ClientBUS clientbus = new ClientBUS();
                    DataTable dtClient = new DataTable();
                    dtClient = clientbus.GetByID(user);
                    PackageBUS pkgBus = new PackageBUS();
                    ClientRegisterBUS clientRegister = new ClientRegisterBUS();
                    int registerId = Convert.ToInt32(dtClient.Rows[0]["registerId"].ToString());
                    int clientId = Convert.ToInt32(dtClient.Rows[0]["clientId"].ToString());
                    DataTable dtClientRegister = clientRegister.GetbyID(registerId);
                    string packageid = dtClientRegister.Rows[0]["packageId"].ToString();
                    DataTable dtpackage = pkgBus.GetById(Convert.ToInt32(packageid));
                    string PackageName = "Thời gian gói dịch vụ <b>" + dtpackage.Rows[0]["PackageName"] + " " + dtClientRegister.Rows[0]["totalfee"] + "USD</b>";
                    DateTime today = DateTime.Now.Date;

                    DateTime dateexpire = DateTime.Now;
                    if (dtClient.Rows[0]["expireDate"] + "" == "")
                    {
                        lblExipre.Text = "Bạn chưa thanh toán. Vui lòng thiết lập thanh toán để tiếp tục truy cập FAmails";
                        Response.Redirect("payment.aspx", true);
                    }
                    else
                    {
                        DataTable dtClientRegisterUnPay = clientRegister.GetUnPaymentByClientID(clientId);
                        if (dtClientRegisterUnPay != null && dtClientRegisterUnPay.Rows.Count > 0)
                        {
                            lblExipre.Text = "Giao dịch của bạn đang chờ thành toán. Vui lòng tiếp tục thanh toán.";
                            hplThanhToan.Text = "Thanh toán";
                            hplThanhToan.NavigateUrl = "Payment.aspx";
                        }
                        else
                        {
                            if (DateTime.TryParse(dtClient.Rows[0]["expireDate"] + "", out dateexpire) && dateexpire < today)
                            {
                                lblExipre.Text = PackageName + " đã hết hạn <b>" + (today - dateexpire).TotalDays + " ngày(" + dateexpire.ToString("dd/MM/yyyy") + ")</b>. Vui lòng thiết lập thanh toán để tiếp tục truy cập FAmails";
                            }
                            else
                            {
                                if ((dateexpire - today).TotalDays < 15)
                                    lblExipre.Text = PackageName + " sẽ hết hạn <b>" + (dateexpire - today).TotalDays + " ngày(" + dateexpire.ToString("dd/MM/yyyy") + ")</b>. Vui lòng thiết lập thanh toán để tiếp tục truy cập FAmails";
                                else lblExipre.Text = PackageName + " sẽ hết hạn <b>" + (dateexpire - today).TotalDays + " ngày(" + dateexpire.ToString("dd/MM/yyyy") + ")</b>. Bấm thiết lập thanh toán để nâng cấp hoặc thay đổi gói dịch vụ";
                            }
                        }
                    }

                    divClientDetail.Visible = divConfigDomain.Visible = hplThanhToan.Enabled = userLogin.UserType == UserType.CustomerAccount;
                    if (userLogin.UserType == UserType.SubAccount)
                    {
                        DataTable table = new AccountDAO().GetPermissionByAccountID(userLogin.Account.AccountID);
                        divAccount.Visible = table.Select("functionid=19").Length > 0;
                        divDepartment.Visible = table.Select("functionid=18").Length > 0;
                        divGroupMail.Visible = table.Select("functionid=20").Length > 0;
                        divSenderConfig.Visible = table.Select("functionid=21").Length > 0;
                    }
                }

            }
            catch (Exception ex)
            {
                Common.logs(Request.RawUrl + "-" + Common.GetCurrentMethod(), ex, Common.logType.error);
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static AccountLimitInfo getaccountinfo()
        {
            UserLoginDTO userLogin = (UserLoginDTO)HttpContext.Current.Session["UserLogin"];
            DataTable sr = new AccountDAO().GetAccountLimitInfo(userLogin.Client.ClientID);
            AccountLimitInfo result = new AccountLimitInfo();
            if (sr != null && sr.Rows.Count > 0)
            {
                if (sr.Rows[0]["expiredate"] + "" != "")
                    result.expiredate = Convert.ToDateTime(sr.Rows[0]["expiredate"]);
                int i = 0;
                int.TryParse(sr.Rows[0]["accountlimit"] + "", out i);
                result.accountlimit = i;

                i = 0;
                int.TryParse(sr.Rows[0]["accountused"] + "", out i);
                result.accountused = i;

                i = 0;
                int.TryParse(sr.Rows[0]["sentlimit"] + "", out i);
                result.sentlimit = i;


                i = 0;
                int.TryParse(sr.Rows[0]["sent"] + "", out i);
                result.sent = i;


                i = 0;
                int.TryParse(sr.Rows[0]["countday"] + "", out i);
                result.countday = i;


                i = 0;
                int.TryParse(sr.Rows[0]["remainday"] + "", out i);
                result.remainday = i;

                i = 0;
                int.TryParse(sr.Rows[0]["storage"] + "", out i);
                result.storage = i;
            }
            return result;
        }

    }
    public class AccountLimitInfo
    {
        public DateTime expiredate { get; set; }
        public int countday { get; set; }
        public int remainday { get; set; }
        public int storage { get; set; }
        public int storageused { get; set; }
        public int sentlimit { get; set; }
        public int sent { get; set; }
        public int accountlimit { get; set; }
        public int accountused { get; set; }
    }
}